/**
    @author: dt
    @date: 2025-06-23
    @description: 日志任务节点
*/
using UnityEngine;

namespace DLib.BehaviorTree.Tasks
{
    /// <summary>
    /// 日志任务节点
    /// 用于在控制台输出调试信息
    /// 可以设置延迟时间来控制输出时机
    /// </summary>
    public class LogTask : TaskNode
    {
        /// <summary>要输出的日志消息</summary>
        private string message;
        
        /// <summary>延迟时间（秒）</summary>
        private float delay;
        
        /// <summary>任务开始时间</summary>
        private float startTime;

        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="message">要输出的日志消息</param>
        /// <param name="delay">延迟时间（秒），默认为0表示立即输出</param>
        public LogTask(string message, float delay = 0f)
        {
            this.message = message;
            this.delay = delay;
        }

        /// <summary>
        /// 任务开始时的初始化
        /// 记录开始时间
        /// </summary>
        protected override void OnStart()
        {
            startTime = Time.time;
        }

        /// <summary>
        /// 任务更新逻辑
        /// 检查是否达到延迟时间，如果达到则输出日志并返回成功
        /// </summary>
        /// <returns>任务执行状态</returns>
        protected override NodeState OnUpdate()
        {
            // 检查是否达到延迟时间
            if (Time.time - startTime >= delay)
            {
                // 输出日志消息
                Debug.Log($"[BehaviorTree] {message}");
                return NodeState.Success;
            }
            
            // 还未达到延迟时间，继续等待
            return NodeState.Running;
        }
    }
} 